An idiomatic GUI library inspired by Elm and based on gtk4-rs. Relm4 is a new version of relm that's built from scratch and is compatible with GTK4 and libadwaita.
Why Relm4
We believe that GUI development should be easy, productive and delightful.
The gtk4-rs crate already provides everything you need to write modern, beautiful and cross-platform applications.
Built on top of this foundation, Relm4 makes developing more idiomatic, simpler and faster and enables you to become productive in just a few hours.
Our goals
- ⏱️ Productivity
- ✨ Simplicity
- 📎 Outstanding documentation
- 🔧 Maintainability
Documentation
Dependencies
Relm4 depends on GTK4: How to install GTK4 and Rust
Ecosystem
- relm4-macros - several macros for declarative UI definitions.
- relm4-components - a collections of reusable components.
- relm4-icons - icons for your application.
- relm4-template - a starter template for creating Relm4 applications in the Flatpak package format.
- relm4-snippets - code snippets to speed up your development.
Use this in to your Cargo.toml
:
# Core library
= "0.9"
# Optional: reusable components
= "0.9"
# Optional: icons (more info at https://github.com/Relm4/icons)
= "0.9.0"
Features
The relm4
crate has four feature flags:
Flag | Purpose | Default |
---|---|---|
macros |
Enable macros by re-exporting relm4-macros |
✅ |
libadwaita |
Improved support for libadwaita | - |
libpanel |
Improved support for libpanel | - |
gnome_46 |
Enable all version feature flags of all dependencies to match the GNOME 46 SDK | - |
gnome_45 |
Enable all version feature flags of all dependencies to match the GNOME 45 SDK | - |
gnome_44 |
Enable all version feature flags of all dependencies to match the GNOME 44 SDK | - |
gnome_43 |
Enable all version feature flags of all dependencies to match the GNOME 43 SDK | - |
gnome_42 |
Enable all version feature flags of all dependencies to match the GNOME 42 SDK | ✅ |
The macros
feature is a default feature.
Examples
Several example applications are available at examples/.
📸 Screenshots from the example apps
A simple counter app
use *;
use *;
Projects using Relm4
- fm — A small, general-purpose file manager.
- Done - A simple and versatile to do app.
- Reovim - GUI frontend for neovim.
- NixOS Configuration Editor - A graphical configuration editor for NixOS.
- Rhino Setup - Setup wizard for Rolling Rhino
- Lemoa - Desktop client for Lemmy
- Score Tracker - App for tracking player scores in card and board games
- Spidey - A seamless and distraction-free work and play environment on the web
- Toolbox Tuner - An application to manage Toolbx containers
- BitRitter - A bitwarden/vaultwarden client with mobile devices in mind
- Space Acres - An opinionated GUI application for farming on Autonomys Network
License
Licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
Feedback and contributions are highly appreciated!